xen/arm: Add workaround for Cortex-A76/Neoverse-N1 erratum #1286807
authorMichal Orzel <michal.orzel@arm.com>
Mon, 16 Nov 2020 12:11:40 +0000 (13:11 +0100)
committerJulien Grall <jgrall@amazon.com>
Wed, 18 Nov 2020 15:21:24 +0000 (15:21 +0000)
commit22e323d115d8f26d5926c20c66e11f85a46837d7
treec94b7286eb57df86a43e316223c2258c64ab5f03
parent5200fba9ce534fc55ec40ab622b6058600090415
xen/arm: Add workaround for Cortex-A76/Neoverse-N1 erratum #1286807

On the affected Cortex-A76/Neoverse-N1 cores (r0p0 to r3p0),
if a virtual address for a cacheable mapping of a location is being
accessed by a core while another core is remapping the virtual
address to a new physical page using the recommended break-before-make
sequence, then under very rare circumstances TLBI+DSB completes before
a read using the translation being invalidated has been observed by
other observers. The workaround repeats the TLBI+DSB operation for all
the TLB flush operations. While this is stricly not necessary, we don't
want to take any risk.

Signed-off-by: Michal Orzel <michal.orzel@arm.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Reviewed-by: Julien Grall <jgrall@amazon.com>
docs/misc/arm/silicon-errata.txt
xen/arch/arm/Kconfig
xen/arch/arm/cpuerrata.c
xen/include/asm-arm/arm64/flushtlb.h
xen/include/asm-arm/cpufeature.h